package isg.etsii.ull.es;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.ResourceBundle;

public class UsuarioRegistradoDAO {
	private final String USERNAME = "jdbc.username";
	private final String PASSWORD = "jdbc.password";
 
	Connection conn = null;
 
	public UsuarioRegistradoDAO() throws ClassNotFoundException, SQLException {
		ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
		String driver = bundle.getString("jdbc.driver");
		String url = bundle.getString("jdbc.url");
		String username = bundle.getString(USERNAME);
		String password = bundle.getString(PASSWORD);
 
		Class.forName(driver);
		conn = DriverManager.getConnection(url, username, password);
	}

	// Insertar un nuevo Usuario Registrado en la base de datos
	public int nuevo(UsuarioRegistrado ur) throws SQLException {
		String sql = "INSERT INTO USUARIOSREGISTRADOS (NOMBRE, DNI, USUARIO, CLAVE) VALUES (?,?,?,?)";
		
		PreparedStatement stm = conn.prepareStatement(sql);
		
		stm.setString(1, ur.getNombre());
		stm.setString(2, ur.getDNI());
		stm.setString(3, ur.getNUsuario());
		stm.setString(4, ur.getClave());
	 
		// poner en un try catch
		int i = stm.executeUpdate();
	 
		return i; // indica el numero de registros insertados
	}
 
	// Listar todos los usuarios de la base de datos
	public ArrayList<UsuarioRegistrado> listarTodos() throws SQLException {
		String sql = "SELECT * FROM USUARIOSREGISTRADOS";
		
		Statement stm = conn.createStatement();
		
		ResultSet rs = stm.executeQuery(sql);
		
		ArrayList<UsuarioRegistrado> listaUsuariosRegistrados = new ArrayList<UsuarioRegistrado>();
		
		while (rs.next()) {
			UsuarioRegistrado ur = new UsuarioRegistrado();
			
			ur.setNombre(rs.getString("NOMBRE"));
			ur.setDNI(rs.getString("DNI"));
			ur.setNUsuario(rs.getString("USUARIO"));
			ur.setClave(rs.getString("CLAVE"));
			
			listaUsuariosRegistrados.add(ur);
		}
	
		return listaUsuariosRegistrados;
	}
 
	// borrar un Usuario Registrado de la base de datos
	public int borrar(int dni) throws SQLException {
		String sql = "DELETE FROM USUARIOSREGISTRADOS WHERE ID = ?";
		
		PreparedStatement stm = conn.prepareStatement(sql);
		
		stm.setInt(1, dni);
		
		int i = stm.executeUpdate();
	
		return i;
	}
 
	// modificar el pass de un Usuario Registrado de la base de datos
	public int actualizar(String usuario, String clave, String dni) throws SQLException {
		String sql = "UPDATE USUARIOSREGISTRADOS SET CLAVE = ? WHERE DNI = ?";
		
		PreparedStatement stm = conn.prepareStatement(sql);
		
		stm.setString(1, clave);
		stm.setString(2, dni);
		
		int i = stm.executeUpdate();
 
		return i;
	}
}
